feat(minerals): interactive 3D crystal view + fix runaway image loop + gem-page polish - #62
Merged
Merged
Conversation
…+ gem-page polish P0 — killed a runaway 404 image-retry loop (missing /crystals/placeholder.svg + unguarded onerror in 3 components caused 26k-57k failed requests / hung pages; guarded onerror, added a real placeholder, backfilled 8 model-less expression SVGs, taught check-svgs to validate expression ids); wired the interactive Crystal3DViewer into the mineral hero as SVG-default + SVG↔3D toggle (new MineralCrystalViewer island, WebGL-gated, reduced-motion aware, lazy glTF parse, SVG fallback for the 8 model-less stones) — and fixed the underlying data bug where getMineralWithModels read model_gltf from the empty base `minerals` table instead of the populated mineral_expressions, so the 3D data now actually reaches the page; sidebar counterpart/related names wrap to 2 lines instead of mid-word truncation; consolidated the 5 tag-list cards into one Characteristics card; CDL notation wraps instead of overflowing; de-duplicated PropertyTable onto the shared ui/Table component with semantic dl/dt/dd markup (which also fixed a latent bug that silently dropped legitimately-zero birefringence/dispersion rows); labelled the chemistry formula; hardened the nested-parens family-name regex; added aria-pressed to the shared ViewerToggle; removed the dead prerender npm script. 507 tests, browser-verified in both themes (3D toggle renders, P0 loop gone).
|
🚀 Preview deployed to: https://a5ee6d21.gemmology-dev.pages.dev |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
/crystals/placeholder.svgplus unguardedonerrorhandlers in 3 components (26k-57k failed requests / hung pages); guardedonerror, added a real placeholder, backfilled 8 model-less expression SVGs, and taughtcheck-svgsto validate expression ids.MineralCrystalViewerisland: WebGL-gated, reduced-motion aware, lazy glTF parse, SVG fallback for the 8 model-less stones) — and fixed the underlying data bug wheregetMineralWithModelsreadmodel_gltffrom the empty basemineralstable instead of the populatedmineral_expressions, so 3D data now actually reaches the page.PropertyTableonto the sharedui/Tablecomponent with semanticdl/dt/ddmarkup (also fixes a latent bug that silently dropped legitimately-zero birefringence/dispersion rows); labelled the chemistry formula; hardened the nested-parens family-name regex; addedaria-pressedto the sharedViewerToggle; removed the deadprerendernpm script.Test plan